package com.huaxonline.boot.file;

import java.io.InputStream;
import java.util.Map;

/**
 * @author Administrator
 */
public interface IFileStorageService {

    /**
     * 上传本地文件
     *
     * @param localFile  本地文件路径
     * @param remoteFile 远程文件路径
     * @return 是否上传成功
     */
    boolean upload(String localFile, String remoteFile);

    /**
     * 通过输入流上传
     *
     * @param in         输入流
     * @param remoteFile 远程文件路径
     * @return 是否上传成功
     */
    boolean upload(InputStream in, String remoteFile);

    /**
     * 下载文件
     *
     * @param remoteFile 远程文件路径
     * @param localFile  本地保存路径
     * @return 是否下载成功
     */
    boolean download(String remoteFile, String localFile);

    /**
     * 删除文件
     *
     * @param remoteFile 远程文件路径
     * @return 是否删除成功
     */
    boolean delete(String remoteFile);

    /**
     * 获取文件信息
     *
     * @param remoteFile 远程文件路径
     * @return 文件信息
     */
    Map<String, Object> getFileInfo(String remoteFile);

    /**
     * 获取文件访问URL
     *
     * @param remoteFile    远程文件路径
     * @param expireSeconds 过期时间(秒)，0表示永久有效
     * @return 文件访问URL
     */
    String getFileUrl(String remoteFile, int expireSeconds);

    /**
     * 判断文件是否存在
     *
     * @param remoteFile 远程文件路径
     * @return 是否存在
     */
    boolean exists(String remoteFile);
}